package battleco

import (
	"wails/schema/enums/battleenum"
)

// @schema_export --ident=schema --json --config=验证器
// @schema_go
// @cache_ts
// @alias 验证器
type C验证器 struct {
	// 技能引导时忽略
	J技能引导时忽略 float64

	// 验证器的结果失败时所显示的错误
	// @alias 失败提示
	S失败提示 string
	// 主要用于提供是否开启的修正
	// @alias 禁用
	J禁用 bool
	// @alias 取反
	Q取反 bool
	// 如果条件存在对应的事件，监听并调用所在对象的Update函数
	// @alias 监听
	J监听 bool
}

// @schema_export --ident=schema --json --config=验证器
// @schema_go
// @cache_ts
// @alias 验证器_单位集
type C验证器_单位集 struct {
	C验证器

	// @alias 查找位置
	C查找位置 battleenum.C查找单位集位置

	// @alias 目标过滤器
	M目标过滤器 *S目标过滤器

	// @alias 目标验证器
	D目标验证器 map[string]string `link:"验证器"`

	// @alias 比较
	B比较 battleenum.E数字比较
}

// @schema_export --ident=schema --json --config=验证器
// @schema_go
// @cache_ts
// @alias 验证器_单位集_数量
type C验证器_单位集_数量 struct {
	C验证器_单位集

	// @alias 数量
	S数量 int
}

// @schema_export --ident=schema --json --config=验证器
// @schema_go
// @cache_ts
// @alias 验证器_单位
type C验证器_单位 struct {
	C验证器
	// @alias 单位
	D单位 *SEffectWhichUnit
}

// @schema_export --ident=schema --json --config=验证器
// @schema_go
// @cache_ts
// @alias 验证器_单位_过滤器
type C验证器_单位_过滤器 struct {
	C验证器_单位
	// @alias 过滤器
	G过滤器 *S目标过滤器
}

// @schema_export --ident=schema --json --config=验证器
// @schema_go
// @cache_ts
// @alias 验证器_单位_扩展属性
type C验证器_单位_扩展属性 struct {
	C验证器_单位

	// @alias 扩展属性
	K扩展属性 interface{} `_type:"扩展属性比较"`
}

// @schema_export --ident=schema --json --config=验证器
// @schema_go
// @cache_ts
// @alias 验证器_单位_活力
type C验证器_单位_活力 struct {
	C验证器_单位

	// @alias 活力
	H活力 battleenum.H活力类型
	// @alias 值类型
	Z值类型 battleenum.H活力值类型

	// @alias 比较
	B比较 battleenum.E数字比较
	// @alias 值
	Z值 float64
}

// @schema_export --ident=schema --json --config=验证器
// @schema_go
// @cache_ts
// @alias 验证器_单位_行为
type C验证器_单位_行为 struct {
	C验证器_单位

	// @alias 行为
	// 需要的行为配置编号
	X行为 string

	// @alias 比较
	B比较 battleenum.E数字比较
	// @alias 值
	Z值 float64
}

// @schema_export --ident=schema --json --config=验证器
// @schema_go
// @cache_ts
// @alias 验证器_技能_消耗
type C验证器_技能_消耗 struct {
	C验证器_单位

	// @alias 技能
	J技能 string `link:"技能"`

	// @alias 冷却中
	L冷却中 battleenum.BoolIgnore

	// @alias 充能中
	C充能中 battleenum.BoolIgnore
}

// @schema_export --ident=schema --json --config=验证器
// @schema_go
// @cache_ts
// @alias 验证器_技能_扩展属性
type C验证器_技能_扩展属性 struct {
	C验证器_单位

	// @alias 技能
	J技能 string `link:"技能"`

	// @alias 扩展属性
	K扩展属性 interface{} `_type:"扩展属性比较"`
}

// @schema_export --ident=schema --json --config=验证器
// @schema_go
// @cache_ts
// @alias 验证器_标记
type C验证器_标记 struct {
	C验证器
	// @alias 标识
	B标识 string
	// @alias 关联
	// 位置关联的编号
	G关联 string
	// @alias 位置
	W位置 battleenum.MarkerLocation

	// @alias 比较
	B比较 battleenum.E数字比较
	// @alias 计数
	J计数 int
	// @alias 标记项目
	// 被匹配的标记, 会判断关联位置[Link]的数量, 少于计数[Count], 效果才会执行
	P标记项目 battleenum.B标记项目
}

// @schema_export --ident=schema --json --config=验证器
// @schema_go
// @cache_ts
// @alias 验证器_位置
type C验证器_位置 struct {
	C验证器
	// @alias 位置
	W位置 *SEffectWhichLocation
}

// 验证-位置[WhichLocation]与目标[Target]的距离[范围]
// @schema_export --ident=schema --json --config=验证器
// @schema_go
// @cache_ts
// @alias 验证器_位置_比较距离
type C验证器_位置_比较距离 struct {
	C验证器_位置
	// @alias 比较
	B比较 battleenum.E数字比较
	// @alias 范围
	F范围 float64
	// @alias 目标位置
	M目标位置 *SEffectWhichLocation
}

// 验证-位置[WhichLocation]周围区域[Radius]内, 符合过滤器[TargetFilter]的单位的数量
// @schema_export --ident=schema --json --config=验证器
// @schema_go
// @cache_ts
// @alias 验证器_位置_比较区域单位数量
type C验证器_位置_比较区域单位数量 struct {
	C验证器_位置
	// @alias 比较
	B比较 battleenum.E数字比较
	// @alias 数量
	S数量 float64
	// @alias 区域半径
	Q区域半径 float64
	//
	F范围模式 battleenum.F范围模式
	// @alias 目标过滤器
	M目标过滤器 *S目标过滤器
}

// @schema_export --ident=schema --json --config=验证器
// @schema_go
// @cache_ts
// @alias 验证器_时间
type C验证器_时间 struct {
	C验证器

	// @alias 比较
	B比较 battleenum.E数字比较

	// @alias 时间
	S时间 float64
}

// @schema_export --ident=schema --json --config=验证器
// @schema_go
// @cache_ts
// @alias 验证器_阵营
type C验证器_阵营 struct {
	C验证器

	// 只支持双阵营模式
	// @alias 使用敌方阵营
	S使用敌方阵营 bool

	// 查找包含标签集的单位集
	// @alias 标签集
	B标签集 map[string]string

	// @alias 查找过滤器
	C查找过滤器 *S目标过滤器
}

// @schema_export --ident=schema --json --config=验证器
// @schema_go
// @cache_ts
// @alias 验证器_阵营_单位数量
type C验证器_阵营_单位数量 struct {
	C验证器_阵营

	// @alias 比较
	B比较 battleenum.E数字比较

	// @alias 数量
	S数量 int
}

// @schema_export --ident=schema --json --config=验证器
// @schema_go
// @cache_ts
// @alias 验证器_支援
type C验证器_支援 struct {
	C验证器

	// @alias 支援
	Z支援 string `link:"场景支援"`
}

// @schema_export --ident=schema --json --config=验证器
// @schema_go
// @cache_ts
// @alias 验证器_支援_阶段
type C验证器_支援_阶段 struct {
	C验证器_支援

	// @alias 支援阶段
	Z支援阶段 battleenum.Z支援阶段
}

// @schema_export --ident=schema --json --config=验证器
// @schema_go
// @cache_ts
// @alias 验证器_条件
type C验证器_条件 struct {
	C验证器

	// 当所在单位为卡片时进行判断。否则返回false
	// @alias 条件
	T条件集 map[string]string `link:"条件"`
}
